package com.java.base.exercise.corejava;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;

/**
 * @Author RenPu
 * @Date 2021/12/29 15:12
 * @Version 1.0
 * @Description:  利用反射机制，获取hashmap的size，初始容量值
 **/
public class container01 {

    public static void main(String[] args) throws Exception {
        HashMap<String, String> map = new HashMap<>();
        map.put("sss","45654465456");

        //利用反射获取对象的Class对象
        Class<? extends HashMap> aClass = map.getClass();

        //根据具体的方法获取对应方法的返回值
        Method capacity = aClass.getDeclaredMethod("capacity");
        capacity.setAccessible(true);
        System.out.println("capacity: "+capacity.invoke(map));

        //根据具体属性，获取对应的属性值
        Field size = aClass.getDeclaredField("size");
        size.setAccessible(true);
        System.out.println("size : "+size.get(map));



//        Map<String, String> map = new HashMap<String, String>();
//        map.put("hollis", "hollischuang");
//
//        Class<?> mapType = map.getClass();
//        Method capacity = mapType.getDeclaredMethod("capacity");
//        capacity.setAccessible(true);
//        System.out.println("capacity : " + capacity.invoke(map));
//
//        Field size = mapType.getDeclaredField("size");
//        size.setAccessible(true);
//        System.out.println("size : " + size.get(map));

    }
}
